Programming computers is a labor-intensive process, requiring talented workers, computer power for programming and time for an iterative process of writing, review/debugging, and editing. Computer programs are written for a variety of purposes, often using similar algorithms and modules for varied and diverse applications. Moreover, different programs can utilize similar user interfaces for example, allowing for user familiarity and potential reuse. However, slight changes to programs or content or structures can have ripple effects which are hard to track or predict, and thus may lead to undesirable results. Additionally, individual programs often require customization at a level such that general aspects of an algorithm may be reused while specific details vary from implementation to implementation.
One form of high level programming relates to scripting learning environments. While this may not involve writing code in a native or near-native programming language (such as C or C++ or Java for example), it often involves manipulation of higher level abstract objects which make up a user interface, for example. Such manipulation may result in an abstract and complicated structure, which does not lend itself to straightforward visualization or which a user (programmer) can easily maintain mentally. Accordingly, it may be useful to provide a method of previewing a proposed structure.
Moreover, the structure may be influenced by not only the various objects incorporated, but also by how those objects are used. Use of the objects may be governed by pre-programmed strategies for use, such that application of different pre-programmed strategies may result in significant changes to otherwise relatively static structures. As such, it may be useful to provide a method of previewing the proposed structure according to different strategies for use.
With multiple learning structures in existence, it may be useful to reuse these structures to perform the same functions (convey the same content) without requiring reprogramming (or duplication of content). Moreover, it may be useful to reuse parts of existing structures without requiring use or execution of the entire structure. As a result, objects may be reused within these structures (or from one structure to another), thus further complicating the structures in question.